package com.hbnu.service;

import com.hbnu.pojo.Room;
import java.util.List;

public interface RoomService {
    
    /**
     * 创建房间
     * @param roomName 房间名称
     * @param creatorId 创建者ID
     * @return 创建的房间对象
     */
    Room createRoom(String roomName, String creatorId);
    
    /**
     * 加入房间
     * @param roomId 房间ID
     * @param userId 用户ID
     * @return 是否成功加入
     */
    boolean joinRoom(Integer roomId, String userId);
    
    /**
     * 设置用户准备状态
     * @param roomId 房间ID
     * @param userId 用户ID
     * @return 是否设置成功
     */
    boolean setReady(Integer roomId, String userId);
    
    /**
     * 检查是否可以开始游戏
     * @param roomId 房间ID
     * @return 是否可以开始游戏
     */
    boolean canStartGame(Integer roomId);
    
    /**
     * 离开房间
     * @param roomId 房间ID
     * @param userId 用户ID
     * @return 是否成功离开
     */
    boolean leaveRoom(Integer roomId, String userId);
    
    /**
     * 根据房间ID获取房间信息
     * @param roomId 房间ID
     * @return 房间对象，如果不存在则返回null
     */
    Room getRoomById(Integer roomId);
    
    /**
     * 添加成员到房间
     * @param roomId 房间ID
     * @param userId 用户ID
     * @return 是否成功添加
     */
    boolean addMemberToRoom(Integer roomId, String userId);
    
    /**
     * 删除房间
     * @param roomId 房间ID
     * @return 是否成功删除
     */
    boolean deleteRoom(Integer roomId);
    
    /**
     * 检查用户是否在房间中
     * @param roomId 房间ID
     * @param userId 用户ID
     * @return 用户是否在房间中
     */
    boolean isUserInRoom(Integer roomId, String userId);
    
    /**
     * 获取按加入时间排序的房间成员列表
     * @param roomId 房间ID
     * @return 按加入时间排序的用户ID列表
     */
    List<String> getOrderedRoomMembers(Integer roomId);
}